home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
bioinformatics.org
/
bioinformatics.org_software.tar
/
www.bioinformatics.org
/
download
/
ecell2
/
ecell220setup.exe
/
{app}
/
standard
/
SRCJ
/
MainWindow.java
< prev
next >
Wrap
Text File
|
2002-07-31
|
29KB
|
1,076 lines
/**
* title: MainWindow class (MainWindow.java)<p>
* description : Controller Panel class <p>
* Copyright (C) 1996-2001 Keio University <p>
* Copyright (C) 1998-2001 Japan Science and Technology Corporation (JST)<p>
* GNU General Public Licence <p>
* Division: Mitui Knowledge Industry Co. Ltd. Bioscience division <p>
* Version : $Id: MainWindow.java,v 1.8 2002/05/13 00:23:04 ota Exp $ <p>
*/
package ecell;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.*;
import javax.swing.plaf.basic.*;
import java.util.Vector;
import java.util.Enumeration;
import java.io.*;
/**
* Starting-up class
* @author: XD.Zheng
* @version: 1.0
* @since JDK1.2.2
*/
public class MainWindow extends JFrame implements ActionListener,Runnable {
JPanel contentPane;
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
JPanel jp4 = new JPanel();
JPanel jp5 = new JPanel();
JLabel jlRule = new JLabel();
// 2002.5
JLabel jlScript = new JLabel();
JLabel jlElapsed = new JLabel();
JLabel jlTime = new JLabel("",2);
JMenuBar menuBar1 = new JMenuBar();
JMenu menuFile = new JMenu("File");
JMenu menuInterface = new JMenu("New Interface");
JMenu menuWindow = new JMenu("Windows");
JMenu menuHelp = new JMenu("Help");
JButton buttonStart = new JButton("Start");
JButton buttonStop = new JButton("Stop");
JButton buttonStep = new JButton("Step");
JLabel labelImage = new JLabel(new ImageIcon("ecanim2.gif"));
JMenuItem itemFileExit = new JMenuItem("Quit");
JMenuItem itemLoadRule = new JMenuItem("Load Rule");
JMenuItem itemLoadScript = new JMenuItem("Load Script");
JMenuItem itemLoadState = new JMenuItem("Load Cell State");
JMenuItem itemSaveState = new JMenuItem("Save Cell State");
JMenuItem itemTracer = new JMenuItem("Tracer");
JMenuItem itemSubstance = new JMenuItem("SubstanceWindow");
JMenuItem itemReactor = new JMenuItem("ReactorWindow");
JMenuItem itemShowMessage = new JMenuItem("MessageWindow");
JMenuItem itemPreference = new JMenuItem("PreferenceWindow");
JMenuItem itemHelpAbout = new JMenuItem("Version Information");
BorderLayout borderLayout1 = new BorderLayout();
Border border1;
Border border2;
Border border3;
Border border4;
/**
* Thread for looping calculation
*/
private volatile Thread coreThread;
/**
* Instance of messageWindow window
*/
Message messageWindow = new Message();
/**
* Class to communicate with JNI
*/
DataField df = new DataField(this);
/**
* Display time at first.
*/
int count =-1;
/**
* Script is read or not?
*/
// 2001.12.25 for ECELL2.2
//int scriptFlag=0;
boolean scriptFlag = false;
/**
* Flag indicating whether the rule file has been read or not, 0 "Not yet" 1 "Already read"
*/
// 2001.12.25 for ECELL2.2
//int ruleFlag=0;
boolean ruleFlag = false;
/**
* Tracer Number
*/
int tracerNumber =0;
/**
* 2001.10.22 stop running flag : true "stop requested"
*/
private boolean bStopAction = false;
/**
* 2002.4 caluclation running status
*/
private boolean bRunning = false;
/**
* Vector Storing all of Tracer windows
*/
//Vector vTracer = new Vector();
/**
* Vector Storing all of Substance windows
*/
//Vector vSubstance = new Vector();
/**
* Vector Storing all of Reactor windows
*/
//Vector vReactor = new Vector();
/**
* Concerining a state of EntrySelector, it is always true currently.
*/
boolean selectorFlag=false;
/**
* EntrySelector
*/
EntrySelector selector= null;
private Vector listeners = new Vector();
/**
* Engine
*/
public Engine engine = null;
/**
* Constructor
*/
//public MainWindow() {
public void initClass()
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
jbInit();
// 2001.12.25 for ECELL2.2
if( this.engine == null )
{
this.engine = new Engine( this );
}
}
/**
* Initialization of components
* @return void
*/
private void jbInit()/* throws Exception */{
messageWindow.setVisible(false);
contentPane = (JPanel) this.getContentPane();
border1 = BorderFactory.createEtchedBorder(Color.white,new Color(142, 142, 142));
border2 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(142, 142, 142),new Color(99, 99, 99));
border3 = BorderFactory.createLineBorder(SystemColor.controlText,1);
border4 = BorderFactory.createBevelBorder(BevelBorder.RAISED,Color.white,Color.white,new Color(142, 142, 142),new Color(99, 99, 99));
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(535, 160));
this.setTitle("E-Cell Control Panel");
this.setResizable(true);
buttonStop.setEnabled(false);
itemFileExit.addActionListener(this);
itemHelpAbout.addActionListener(this);
itemShowMessage.addActionListener(this);
itemTracer.addActionListener(this);
itemLoadRule.addActionListener(this);
itemLoadScript.addActionListener(this);
itemLoadState.addActionListener(this);
itemSaveState.addActionListener(this);
itemSubstance.addActionListener(this);
itemReactor.addActionListener(this);
jlTime.setBorder(border2);
jlTime.setPreferredSize(new Dimension(100,30));
labelImage.setBorder(border4);
menuFile.add(itemLoadRule);
menuFile.add(itemLoadScript);
menuFile.add(itemLoadState);
menuFile.add(itemSaveState);
menuFile.add(itemFileExit);
menuInterface.add(itemTracer);
menuInterface.add(itemSubstance);
menuInterface.add(itemReactor);
menuWindow.add(itemShowMessage);
menuWindow.add(itemPreference);
menuHelp.add(itemHelpAbout);
menuBar1.add(menuFile);
menuBar1.add(menuInterface);
menuBar1.add(menuWindow);
menuBar1.add(menuHelp);
this.setJMenuBar(menuBar1);
jlRule.setText("Rule:");
jp1.setLayout(new FlowLayout(0,5,3));
jp1.add(jlRule);
// 2002.5
jlScript.setText( "" );
jp1.add( jlScript );
jp2.setLayout(new FlowLayout(0,5,3));
jp2.setBorder(border1);
jlElapsed.setText("Elapsed Time[s]:");
jlTime.setText(" 0");
jp3.setLayout(new BorderLayout());
jp3.add(jp1,"North");
jp3.add(jp5, BorderLayout.CENTER);
jp5.add(jp2, null);
jp2.add(jlElapsed);
jp2.add(jlTime);
jp2.add(buttonStart);
jp2.add(buttonStop);
jp2.add(buttonStep);
contentPane.add(jp3,"Center");
itemPreference.addActionListener(this);
buttonStart.addActionListener(this);
buttonStop.addActionListener(this);
buttonStep.addActionListener(this);
jp4.add(labelImage);
contentPane.add(jp4,"East");
// 2002.1.16
this.setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE );
}
/**
* Starting up of Thread
* @return void
*/
void startAction(){
engine.debugFunc( "-----> startAction@" + getClass().getName() + "()" );
coreThread = new Thread(this);
coreThread.start();
itemFileExit.setEnabled(false);
itemLoadRule.setEnabled(false);
itemLoadScript.setEnabled(false);
itemLoadState.setEnabled(false);
itemSaveState.setEnabled(false);
itemTracer.setEnabled(false);
itemSubstance.setEnabled(false);
itemReactor.setEnabled(false);
itemPreference.setEnabled(false);
buttonStart.setEnabled(false);
buttonStop.setEnabled(true);
buttonStep.setEnabled(false);
setTracerSaveButtonState( false );
engine.debugFunc( "<----- startAction@" + getClass().getName() + "()" );
}
/**
* display rule file name
*/
private void setRuleFileName()
{
StringBuffer buf = new StringBuffer( "Rule : " );
if( ruleFlag )
{
String fname = new String( engine.getRuleName() );
int index = fname.lastIndexOf( File.separator );
if( index > 0 )
{
fname = fname.substring( index + 1 );
}
buf.append( fname );
buf.append( " " );
}
jlRule.setText( buf.toString() );
}
public void setScriptFileName( String name )
{
String filename = "";
if( !name.equals( "" ) )
{
String fname = new String( name );
int index = fname.lastIndexOf( File.separator );
if( index > 0 )
{
fname = fname.substring( index + 1 );
}
filename = " Script : " + fname;
}
jlScript.setText( filename );
}
/**
* Inform when reading of Script is finished.
* @return void
*/
void setScriptFlag(){
scriptFlag=true;
if(!ruleFlag) setState1();
if(ruleFlag) setState2();
}
/**
* Inform when reading of Script is finished.
* @param flag boolean
* @param ruuning_status boolean engine running or not
* @return void
*/
void setScriptFlag( boolean flag, boolean running_status )
{
engine.debugFunc( "-----> setScriptFlag(flag:" + flag + ", status:" + running_status + ")@" + getClass().getName() );
scriptFlag=flag;
if( flag && !running_status )
{
if(!ruleFlag) setState1();
if(ruleFlag) setState2();
}
engine.debugFunc( "<----- setScriptFlag@" + getClass().getName() );
}
/**
* State in which the rule file cannot be open
* @return void
*/
void setState1(){
engine.debugFunc( "-----> setState1@" + getClass().getName() + "()" );
itemFileExit.setEnabled(true);
itemLoadRule.setEnabled(true);
itemLoadScript.setEnabled(true);
itemLoadState.setEnabled(false);
itemSaveState.setEnabled(false);
itemTracer.setEnabled(false);
itemSubstance.setEnabled(false);
itemReactor.setEnabled(false);
itemShowMessage.setEnabled(true);
itemPreference.setEnabled(false);
itemHelpAbout.setEnabled(true);
buttonStart.setEnabled(false);
buttonStop.setEnabled(false);
buttonStep.setEnabled(false);
setTracerSaveButtonState( false );
engine.debugFunc( "<----- setState1@" + getClass().getName() + "()" );
}
/**
* State in which the rule file can be open
* @return void
*/
void setState2(){
engine.debugFunc( "-----> setState2@" + getClass().getName() + "()" );
itemFileExit.setEnabled(true);
itemLoadRule.setEnabled(false);
itemLoadScript.setEnabled(true);
itemLoadState.setEnabled(true);
itemSaveState.setEnabled(true);
itemTracer.setEnabled(true);
itemSubstance.setEnabled(true);
itemReactor.setEnabled(true);
itemShowMessage.setEnabled(true);
itemPreference.setEnabled(true);
itemHelpAbout.setEnabled(true);
buttonStart.setEnabled(true);
buttonStop.setEnabled(false);
buttonStep.setEnabled(true);
setTracerSaveButtonState( true );
engine.debugFunc( "<----- setState2@" + getClass().getName() + "()" );
}
/**
* Stop Thred.
* @return void
*/
void stopAction(){
engine.debugFunc( "-----> stopAction@" + getClass().getName() + "()" );
// 2001.12.25 for ECELL2.2
//df.setMainWindowState(1);
engine.setMainWindowState( 1 );
coreThread=null;
engine.debugFunc( "------ scriptFlag:" + scriptFlag + "/ruleFlag:" + ruleFlag );
itemFileExit.setEnabled(true);
itemLoadRule.setEnabled(false);
if (scriptFlag)
itemLoadScript.setEnabled(true);
itemLoadState.setEnabled(true);
itemSaveState.setEnabled(true);
itemTracer.setEnabled(true);
itemSubstance.setEnabled(true);
itemReactor.setEnabled(true);
itemPreference.setEnabled(true);
buttonStart.setEnabled(true);
buttonStop.setEnabled(false);
buttonStep.setEnabled(true);
// 2001.10.22
this.setStopActionFlag( false );
setTracerSaveButtonState( true );
engine.debugFunc( "<----- stopAction@" + getClass().getName() + "()" );
}
private void setTracerSaveButtonState( boolean flag )
{
Vector lsnrs = (Vector)listeners.clone();
for( Enumeration enum = lsnrs.elements(); enum.hasMoreElements(); )
{
ECell2Interface interf = (ECell2Interface)enum.nextElement();
if( interf instanceof Tracer )
{
((Tracer)interf).buttonSave.setEnabled( flag );
}
}
}
/**
* ActionPerformed
* @param e ActionEvent Event
* @return void
*/
public void actionPerformed(ActionEvent e) {
if(e.getSource()== buttonStart){
//df.setMainWindowState(0);
startAction();
}
if(e.getSource()==buttonStop){
// 2002.3.19 akira shiozawa
if( engine.getScriptRunning() )
{
engine.stopScript();
}
stopAction();
}
if(e.getSource()==buttonStep){
try{
// 2001.12.25 for ECELL2.2
//df.setMainWindowState(2);
engine.setMainWindowState( 2 );
// 2002.4 akira shiozawa
fireClicked();
double fTime = df.getTime();
jlTime.setText(" "+ getDoubleValue(fTime));
}catch(Exception ex){
messageWindow.setErrorMessage( ex );
}
}
if(e.getSource()== itemFileExit){
fileExit_actionPerformed();
}
if(e.getSource()== itemHelpAbout){
helpAbout_actionPerformed();
//messageWindow.setMessage("HelpAbout");
}
if(e.getSource() == itemShowMessage){
//messageWindow.setMessage("ShowMessage");
messageWindow.setVisible(true);
messageWindow.show();
}
if(e.getSource()== itemPreference){
Preference Preference =
new Preference(this );
Preference.setSize( 220 , 100 );
Preference.setVisible(true);
Preference.setLocation(250,200);
}
if(e.getSource() == itemTracer) {
Tracer tracer = new Tracer(this,tracerNumber);
try{
df.setTracerState(tracerNumber,0);
}catch(Exception ex){
messageWindow.setErrorMessage( ex );
}
tracerNumber ++;
//vTracer.addElement(tracer);
tracer.setVisible(true);
//tracer.setLocation(150,100);
}
if(e.getSource() == itemLoadRule){
AnFileFilter filter = new AnFileFilter();
filter.add("eri");
filter.setDescription("*.eri");
JFileChooser jFileChooser = new JFileChooser( (new File( "." )).getAbsolutePath() );
jFileChooser.setDialogTitle("File Selector");
jFileChooser.setFileFilter(filter);
jFileChooser.setMultiSelectionEnabled(false);
int ans = jFileChooser.showOpenDialog(contentPane);
if(ans ==JFileChooser.APPROVE_OPTION){
String filename =jFileChooser.getSelectedFile().getAbsolutePath();
try{
// 2001.12.25 for ECELL2.2
//ruleFlag = df.setRuleFile(filename);
engine.setRuleFile( filename );
if(!ruleFlag) setState1();
if(ruleFlag) setState2();
}catch(Exception ex){
messageWindow.setErrorMessage( ex );
}
}
}
if(e.getSource() == itemLoadScript){
AnFileFilter filter = new AnFileFilter();
filter.add("ecs");
filter.setDescription("*.ecs");
JFileChooser jFileChooser = new JFileChooser((new File( "." )).getAbsolutePath());
jFileChooser.setDialogTitle("File Selector");
jFileChooser.setFileFilter(filter);
jFileChooser.setMultiSelectionEnabled(false);
int ans = jFileChooser.showOpenDialog(null);
if(ans ==JFileChooser.APPROVE_OPTION){
String filename =jFileChooser.getSelectedFile().getAbsolutePath();
try{
scriptFlag=false;
// 2001.12.25 for ECELL2.2
//ruleFlag = df.setScriptFile(filename);
engine.setScriptFile( filename );
/*** 2002.1.8
if(ruleFlag) {
if(scriptFlag) setState2();
}
***/
}catch(Exception ex){
messageWindow.setErrorMessage( ex );
}
}
}
if(e.getSource() == itemLoadState){
AnFileFilter filter = new AnFileFilter();
filter.add("cs");
filter.setDescription("*.cs");
JFileChooser jFileChooser = new JFileChooser((new File( "." )).getAbsolutePath());
jFileChooser.setDialogTitle("File Selector");
jFileChooser.setFileFilter(filter);
jFileChooser.setMultiSelectionEnabled(false);
int ans = jFileChooser.showOpenDialog(null);
if(ans ==JFileChooser.APPROVE_OPTION){
String filename =jFileChooser.getSelectedFile().getAbsolutePath();
try{
// 2001.12.25 for ECELL2.2
//df.setCellStateFile(filename);
engine.setCellStateFile( filename );
}catch(Exception ex){
messageWindow.setErrorMessage( ex );
}
}
}
if(e.getSource() == itemSaveState) {
AnFileFilter filter = new AnFileFilter();
filter.add("cs");
filter.setDescription("*.cs");
JFileChooser jFileChooser = new JFileChooser((new File( "." )).getAbsolutePath());
jFileChooser.setDialogTitle("File Selector");
jFileChooser.setFileFilter(filter);
jFileChooser.setMultiSelectionEnabled(false);
boolean flag = true;
while( flag )
{
int ans = jFileChooser.showSaveDialog(null);
if(ans ==JFileChooser.APPROVE_OPTION){
String filename =jFileChooser.getSelectedFile().getAbsolutePath().trim();
// 2002.4 akira shiozawa
if( !filename.endsWith( ".cs" ) )
{
filename += ".cs";
}
File csfile = new File( filename );
if( csfile.exists() )
{
int opt = JOptionPane.showConfirmDialog( this.getContentPane(),
"overwrite " + filename + "?",
"ECELL2",
JOptionPane.YES_NO_OPTION );
if( opt != JOptionPane.YES_OPTION )
{
continue;
}
}
try{
// 2001.12.25 for ECELL2.2
//df.saveCellStateFile(filename);
engine.saveCellStateFile( filename );
}catch(Exception ex){
messageWindow.setErrorMessage( ex );
}
}
flag = false;
}
}
if(e.getSource() == itemSubstance) {
if(selectorFlag ==false){
selector = new EntrySelector(1,this);
selectorFlag = true;
selector.setVisible(true);
//selector.setLocation(150,100);
}else{
if(selector.isVisible()) {
Object message ="Entry Selector is be using by other window";
String title ="E-Cell Control Panel";
int messageType = JOptionPane.INFORMATION_MESSAGE;
JOptionPane.showMessageDialog(this,message,title,messageType);
return;
}
selector.setEntrySelector(1);
selector.setVisible(true);
}
}
if(e.getSource() == itemReactor) {
if(selectorFlag ==false){
selector = new EntrySelector(2,this);
selectorFlag = true;
selector.setVisible(true);
//selector.setLocation(150,100);
}else{
if(selector.isVisible()) {
Object message ="Entry Selector is be using by other window";
String title ="E-Cell Control Panel";
int messageType = JOptionPane.INFORMATION_MESSAGE;
JOptionPane.showMessageDialog(this,message,title,messageType);
return;
}
selector.setEntrySelector(2);
selector.setVisible(true);
}
}
}
/**
* Start up Loop.
* @return void
**/
private void fireClicked()
{
Vector listenersClone = (Vector) listeners.clone();
AccessListener listener;
for( Enumeration e = listenersClone.elements(); e.hasMoreElements(); )
{
listener = (AccessListener) e.nextElement();
listener.accessJni( this );
}
}
/**
* Adds a listener for clicks.
* @param listener AccessListener
* @return void
*/
public void addAccessListener( AccessListener listener )
{
listeners.addElement( listener );
}
/**
* Removes a listener for clicks.
* @ param listener AccessListener
* @return void
**/
public void removeAccessListener( AccessListener listener )
{
listeners.removeElement( listener );
}
/**
* repaint all tracers.
* @return void
*/
public void repaintAllTracers()
{
Vector tracers = (Vector)listeners.clone();
for( Enumeration enum = tracers.elements(); enum.hasMoreElements(); )
{
ECell2Interface interf = (ECell2Interface)enum.nextElement();
if( interf instanceof Tracer )
{
((Tracer)interf).grap.repaint();
}
}
}
/**
* File exit
* @return void
*/
public void fileExit_actionPerformed() {
Object confirmText ="Do you really want to exit ?";
String confirmTitle ="E-Cell Control Panel";
int optionType = JOptionPane.YES_NO_OPTION;
int messageType = JOptionPane.QUESTION_MESSAGE;
int selectedValue =JOptionPane.showConfirmDialog(this.getContentPane(),confirmText,
confirmTitle,optionType,messageType);
if(selectedValue==0){
// 2002.3.19 akira shiozawa
exitSystem();
}
}
/**
* System exit
* @return void
**/
public void exitSystem()
{
if( coreThread != null )
{
this.stopAction();
// 2002.4 akira shiozawa
while( bRunning )
{
try
{
Thread.sleep( 50 );
}
catch( Exception e )
{
messageWindow.setErrorMessage( e );
}
}
}
// 2002.4 akira shiozawa
while( true )
{
Vector lsnrs = (Vector)listeners.clone();
for( Enumeration enum = lsnrs.elements(); enum.hasMoreElements(); )
{
ECell2Interface interf = (ECell2Interface)enum.nextElement();
if( interf.getRunningFlag() )
{
try
{
Thread.sleep( 50 );
}
catch( Exception e )
{
messageWindow.setErrorMessage( e );
}
break;
}
interf.exit_actionPerformed();
}
if( listeners.size() == 0 )
{
break;
}
}
// 2001.12.25 for ECELL2.2
//df.setMainWindowState(-1);
engine.setMainWindowState( -1 );
System.exit(0);
}
/**
* Help/version information
* @return void
*/
public void helpAbout_actionPerformed()
{
JOptionPane.showMessageDialog( this.getContentPane(),
Engine.msg_welcome,
"ECELL2",
JOptionPane.INFORMATION_MESSAGE );
}
/**
* Override to exit when the window is closed.
* @param e Event
* @return void
*/
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
if( !bRunning )
{
fileExit_actionPerformed();
}
}
}
/*
* Thread Start
* @return void
*/
public void run() {
engine.debugFunc( "-----> run@" + getClass().getName() );
// 2002.4 akira shiozawa
bRunning = true;
Thread thisThread = Thread.currentThread();
while(coreThread==thisThread)
{
try {
thisThread.sleep(50);
fireClicked();
// 2001.12.25 for ECELL2.2
//int ret = df.setMainWindowState(0);
int ret = engine.setMainWindowState( 0 );
double fTime = df.getTime();
jlTime.setText(" "+ getDoubleValue(fTime));
// 2001.10.22 stop running when setMainWindowState returns 0
if( ret == 0 || this.getStopActionFlag() )
{
this.stopAction();
}
}catch(Exception ex)
{
messageWindow.setErrorMessage( ex );
}
}
// 2002.4 akira shiozawa
if( engine.getScriptRunning() )
{
engine.loadScript( engine.getScriptName() );
}
// 2002.4 akira shiozawa
bRunning = false;
engine.debugFunc( "<----- run@" + getClass().getName() );
}
/**
* Convert Double value to suitable String.
* @param vaule Double data
* @return Converted String
*/
public String getDoubleValue(double value){
int dotIndex=-1;
int eIndex=-1;
String str=String.valueOf(value);
int len=str.length();
if(len<=8) return str;
dotIndex=str.indexOf(".");
eIndex=str.indexOf("E");
if(eIndex==-1){
if(dotIndex==-1){
return str;
}else if(dotIndex==7){
return str.substring(0,9);
}else if(dotIndex<7){
return str.substring(0,8);
}else if(dotIndex>7){
return str.substring(0,dotIndex);
}
}else if(eIndex<=7){
return str;
}else{
return (str.substring(0,7)+str.substring(eIndex,len));
}
return "";
}
/**
* Set stop action flag.
* @ param flag boolean
* @return void
**/
public void setStopActionFlag( boolean flag )
{
bStopAction = flag;
}
/**
* Get stop action flag.
* @return boolean
**/
public boolean getStopActionFlag()
{
return bStopAction;
}
/**
* Set rule file flag.
* @ param flag boolean
* @return void
**/
public void setRuleFlag( boolean flag )
{
engine.debugFunc( "-----> setRuleFlag@" + getClass().getName() + "( flag:" + flag + " )" );
ruleFlag = flag;
// 2002.5
setRuleFileName();
engine.debugFunc( "<----- setRuleFlag@" + getClass().getName() + "()" );
}
//static String arg = "";
//boolean packFrame = false;
public static final String reactorPath = "./DLLR";
public static final String jniDLLName = "jni_source";
public static final String jniStaticDLLReactor = "jni_static";
public static final String propertyPath = "ecell2.properties";
public static void loadReactorDlls( String rPath )
{
// 2002.1.9
ExtensionFilter filter = new ExtensionFilter( rPath, ".dll" );
String[] list = filter.list();
if( list != null )
{
StringBuffer dlls = new StringBuffer();
boolean ret = true;
for( int i = 0; i < list.length; i++ )
{
//dlls.append( list[i].substring( 0, list[i].lastIndexOf( DllFilter.extension ) ) );
dlls.append( list[i] );
dlls.append( "," );
}
ret = DataField.loadReactorDlls( list.length, dlls.toString() );
if( !ret )
{
System.out.println( "Reactor DLL load failed." );
System.exit( 1 );
}
}
}
/**
*Main method
*/
public static void main(String[] args) {
//MainWindow.loadReactorDlls();
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
// 2001.12.25 for ECELL2.2
//new MainWindows();
//new MainWindows( args );
MainWindow frame = new MainWindow();
frame.initClass();
/**
if (frame.packFrame)
{
frame.pack();
}
else
**/
{
frame.validate();
}
frame.setVisible(true);
frame.setLocation(150,200);
// 2002.1.16
TracerDataManager.clearTempDir();
// 2001.12.25 for ECELL2.2
//int ret=0;
boolean ret = false;
// 2001.12.25 for ECELL2.2
//ret=frame.df.setMainWindowsArg(arg);
ret = frame.engine.setMainWindowsArg( args );
frame.ruleFlag=ret;
if(!ret){
frame.setState1();
}
}
static
{
System.loadLibrary( MainWindow.jniDLLName );
}
}